import { mergeOptions } from "../util/index.js"

export default function initExtend(Vue) {

  Vue.extend = function (extendOptions) {
    // 组件唯一标识
    let cid = 0
    // 定义子组件的构造函数
    const Sub = function VueComponent(options) {
      // 创建组件
      this._init(options)
    }
    Sub.cid = cid++
    // 将子组件的原型继承Vue的原型
    Sub.prototype = Object.create(this.prototype)
    Sub.prototype.construction = Sub  
    Sub.options = mergeOptions(this.options, extendOptions)
    return Sub
  }
}